package hr.ctg.domain.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.hibernate.validator.NotNull;

@Entity
@Table(name = "vrijednost_valute")
@NamedQueries( {
		@NamedQuery(name = "VrijednostValute.findByDatum", query = "select vv from VrijednostValute vv where vv.datum = ?"),
		@NamedQuery(name = "VrijednostValute.findLast", query = "select vv from VrijednostValute vv where vv.datum = (select max(vv1.datum) from VrijednostValute vv1)") })
public class VrijednostValute implements Serializable {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_vrijednosti_valute")
	private int idVrijednostiValute;

	private Date datum;

	private float kupnja;

	private float srednji;

	private float prodaja;

	@ManyToOne
	@JoinColumn(name = "id_valute", nullable = false)
	@NotNull
	private Valuta valuta;

	private static final long serialVersionUID = 1L;

	public VrijednostValute() {
		super();
	}

	public int getIdVrijednostiValute() {
		return idVrijednostiValute;
	}

	public void setIdVrijednostiValute(final int idVrijednostiValute) {
		this.idVrijednostiValute = idVrijednostiValute;
	}

	public Date getDatum() {
		return datum;
	}

	public void setDatum(final Date datum) {
		this.datum = datum;
	}

	public float getKupnja() {
		return kupnja;
	}

	public void setKupnja(final float kupnja) {
		this.kupnja = kupnja;
	}

	public float getSrednji() {
		return srednji;
	}

	public void setSrednji(final float srednji) {
		this.srednji = srednji;
	}

	public float getProdaja() {
		return prodaja;
	}

	public void setProdaja(final float prodaja) {
		this.prodaja = prodaja;
	}

	public Valuta getValuta() {
		return valuta;
	}

	public void setValuta(final Valuta valuta) {
		this.valuta = valuta;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + idVrijednostiValute;
		return result;
	}

	@Override
	public boolean equals(final Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		final VrijednostValute other = (VrijednostValute) obj;
		if (idVrijednostiValute != other.idVrijednostiValute) {
			return false;
		}
		return true;
	}

}
